Oleh : Samatha Marhaendra Putra (19/444071/TK/49267) (Kelas B)
Pada notebook ini, saya mencoba melakukan analisis numeris untuk menentukan laju pertumbuhan infeksi COVID-19 dan perbandingannya di beberapa negara, di antaranya yaitu Tiongkok, Korea Selatan, Italia, Iran, Spanyol, Jerman, Australia, Amerika Serikat, dan Indonesia. Dataset yang dipakai bersumber dari https://www.worldometers.info/coronavirus/.
# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt # visualisasi data
import matplotlib.patches as mpatches # memberi warna pada legenda
import math
# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
# Any results you write to the current directory are saved as output.
#1. CHINA Dataset
#Date for China only
date_chi_up = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27)) #Pertumbuhan(22 Jan - 17 Feb)
date_chi_down = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39)) #Penurunan(17 Feb - 26 Mar)
date_chi_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65)) #Total Deaths(22 Jan - 26 Mar)
#China: Active Cases (Pertumbuhan)
chi_act_up = np.array((554,771,1208,1870,2613,4349,5739,7417,9308,11289,13748,16369,19383,22942,26302,28985,31774,33738,35982,37626,38791,51591,55748,56873,57416,57934,58016))
#China: Active Cases (Penurunan)
chi_act_down = np.array((58016,57805,56301,54921,53284,52093,49824,47765,45600,43258,39919,37414,35129,32616,30004,27423,25353,23784,22179,20533,19016,17721,16136,14831,13524,12088,10733,9893,8967,8056,7263,6569,6013,5353,5120,4735,4287,3947,3460))
#China: Total Deaths
chi_dth = np.array((17,25,41,56,80,106,132,170,213,259,304,361,425,490,563,636,722,811,908,1016,1113,1259,1380,1523,1665,1770,1868,2004,2118,2236,2345,2442,2592,2663,2715,2744,2788,2835,2870,2912,2943,2981,3012,3042,3070,3097,3119,3136,3158,3169,3176,3189,3199,3213,3226,3237,3245,3248,3255,3261,3270,3277,3281,3287,3292))
#China: Active Cases (Pertumbuhan & Penurunan)
chi_act_updown = np.concatenate
#2. SOUTH KOREA Dataset
#Date for South Korea only
date_kor_up = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26)) #Pertumbuhan(15 Feb - 11 Mar)
date_kor_down = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)) #Penurunan(11 Mar - 26 Mar)
date_kor_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36)) #Total Deaths(20 Feb - 26 Mar)
#S.Korea: Active Cases (Pertumbuhan)
kor_act_up = np.array((19,20,20,19,42,94,190,416,578,803,944,1225,1729,2297,3109,3685,4277,5120,5498,6107,6415,6875,7097,7178,7165,7362))
#S.Korea: Active Cases (Penurunan)
kor_act_down = np.array((7362,7293,7198,7180,7253,7024,6838,6789,6527,6325,6085,5884,5684,5410,5281,4966))
#S.Korea: Total Deaths
kor_dth = np.array((1,2,2,6,8,11,12,13,16,17,21,28,32,35,42,43,48,50,53,60,60,66,67,72,75,75,81,84,91,94,102,104,111,120,126,131))
#3. ITALY Dataset
#Date for Italy only
date_ita_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41)) #Active Cases (15 Feb - 26 Mar)
date_ita_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35)) #Total Deaths (21 Feb - 26 Mar)
#Italy: Active Cases
ita_act = np.array((3,3,3,3,3,4,19,75,152,221,310,455,593,822,1049,1577,1835,2263,2706,3296,3916,5061,6387,7985,8514,10590,12839,14955,17750,20603,23073,26062,28710,33190,37860,42681,46638,50418,54030,57521,62013))
#Italy: Total Deaths
ita_dth = np.array((1,2,3,7,11,12,17,21,29,41,52,79,107,148,197,233,366,463,631,827,1016,1266,1441,1809,2158,2503,2978,3405,4032,4825,5476,6077,6820,7503,8215))
#4. IRAN Dataset
#Date for Iran only
date_iran_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36)) #Active Cases (20 Feb - 26 Mar)
date_iran_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37)) #Total Deaths (19 Feb - 26 Mar)
#Iran: Active Cases
iran_act = np.array((3,14,23,34,46,54,95,165,281,427,749,1144,1824,2278,2666,3710,4009,4238,4530,5020,5687,6370,7321,7779,8624,9142,9792,10516,11144,11466,11419,12040,12861,13964,15315,16715))
#Iran: Total Deaths
iran_dth = np.array((2,2,4,6,8,12,16,19,26,34,43,54,66,77,92,108,124,145,194,237,291,354,429,514,611,724,853,988,1135,1284,1433,1556,1685,1812,1934,2077,2234))
#5. SPAIN Dataset
#Date for Spain only
date_spa_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)) #Active Cases (24 Feb - 26 Mar)
date_spa_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)) #Total Deaths (3 Mar - 26 Mar)
#Spain: Active Cases
spa_act = np.array((1,7,11,23,31,56,82,118,162,224,276,387,485,625,1169,1524,2039,2871,4906,5678,7177,9070,10265,13050,16139,18890,21990,24421,29470,35273,40501,46406))
#Spain: Total Deaths
spa_dth = np.array((1,2,3,8,10,17,30,36,55,86,133,196,294,342,533,638,831,1093,1381,1772,2311,2991,3647,4365))
#6. GERMANY Dataset
#Date for Germany only
date_ger_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41)) #Active Cases (15 Feb - 26 Mar)
date_ger_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)) #Total Deaths (9 Mar - 26 Mar)
#Germany: Active Cases
ger_act = np.array((13,13,9,7,7,3,2,2,2,2,3,11,32,58,63,114,149,187,246,528,652,782,1022,1204,1545,1938,2714,3621,4544,5754,7188,9274,12194,15161,19600,22071,24513,28480,29542,33570,37998))
#Germany: Total Deaths
ger_dth = np.array((2,2,3,6,8,9,13,17,26,28,44,68,84,94,123,159,206,267))
#7. AUSTRALIA Dataset
#Date for Australia only
date_aus_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41)) #Active Cases (15 Feb - 26 Mar)
date_aus_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26)) #Total Deaths (1 Mar - 26 Mar)
#Australia: Active Cases
aus_act = np.array((5,5,5,5,5,6,8,10,11,11,7,8,8,10,10,13,17,17,30,36,39,49,58,68,91,101,127,170,218,268,369,423,547,703,875,1019,1514,1762,2191,2547,2867))
#Australia: Total Deaths
aus_dth = np.array((1,1,1,2,2,2,3,3,3,3,3,3,3,3,5,5,5,6,7,7,7,7,7,8,11,13))
#8. USA Dataset
#Date for USA only
date_usa_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41)) #Active Cases (15 Feb - 26 Mar)
date_usa_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27)) #Total Deaths (29 Feb - 26 Mar)
#USA: Active Cases
usa_act = np.array((12,12,12,12,12,10,29,29,28,48,51,54,54,57,60,65,85,106,138,200,289,401,504,663,949,1248,1581,2126,2664,3484,4434,6127,8940,13464,18965,23720,33000,42930,53697,66790,82272))
#USA: Total Deaths
usa_dth = np.array((1,1,6,9,11,12,15,19,22,26,30,38,41,48,57,69,87,110,150,206,255,301,414,555,780,1027,1295))
#1. INDONESIA Dataset
#Date for Indonesia only
date_ina_act = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)) #Active Cases (2 Feb - 26 Mar)
date_ina_dth = np.array((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)) #Total Deaths (11 Feb - 26 Mar)
#Indonesia: Active Cases
ina_act = np.array((2,2,2,2,4,4,6,19,25,31,30,60,83,104,121,156,197,269,320,392,437,500,601,701,780))
#Indonesia: Total Deaths
ina_dth = np.array((1,1,4,5,5,5,7,19,25,32,38,48,49,55,58,78))
1. Regresi Berpangkat
1.a. Kurva Pertumbuhan
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases (Pertumbuhan) di Tiongkok, dan x adalah tanggalnya.
y = chi_act_up
x = date_chi_up
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A #A=log(a)
b = B
print("Persamaan Berpangkat (Tiongkok - Active Cases - Pertumbuhan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Tiongkok - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_up_1 = r**2
visualisasi grafik persamaan berpangkat (Tiongkok - Active Cases - Pertumbuhan)
xreg = np.array(range(0,int(x[-1]+1)*10))
xreg = xreg/10 #bertujuan untuk memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Tiongkok - Active Cases - Pertumbuhan)')
plt.xlabel('Date (22 Jan - 17 Feb)')
plt.ylabel('Active Cases')
1.b. Kurva Penurunan
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases (Penurunan) di Tiongkok, dan x adalah tanggalnya.
y = chi_act_down
x = date_chi_down
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Tiongkok - Active Cases - Penurunan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Tiongkok - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_down_1 = r**2
visualisasi grafik persamaan berpangkat (Tiongkok - Active Cases - Penurunan)
xreg = np.array(range(1,int(x[-1]+1)))
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Tiongkok - Active Cases - Penurunan)')
plt.xlabel('Date (17 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
2.a. Kurva Pertumbuhan
persamaan berikut dapat ditulis menjadi:
y = chi_act_up
x = date_chi_up
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Tiongkok - Active Cases - Pertumbuhan):")
print("y = {:.4f}e^({:.4f}x)".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Tiongkok - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_up_2 = r**2
visualisasi grafik persamaan eksponensial (Tiongkok - Active Cases - Pertumbuhan)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Tiongkok - Active Cases - Pertumbuhan)')
plt.xlabel('Date (22 Jan - 17 Feb)')
plt.ylabel('Active Cases')
2.b. Kurva Penurunan
persamaan berikut dapat ditulis menjadi:
y = chi_act_down
x = date_chi_down
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Tiongkok - Active Cases - Penurunan):")
print("y = {:.4f}e^({:.4f}x)".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Tiongkok - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_down_2 = r**2
visualisasi grafik persamaan eksponensial (Tiongkok - Active Cases - Penurunan)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Tiongkok - Active Cases - Penurunan)')
plt.xlabel('Date (17 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
3.a. Kurva Pertumbuhan
y = chi_act_up
x = date_chi_up
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = 'float')
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = 'float')
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[2.70000000e+01, 3.78000000e+02, 6.93000000e+03, 1.42884000e+05],
[3.78000000e+02, 6.93000000e+03, 1.42884000e+05, 3.14206200e+06],
[6.93000000e+03, 1.42884000e+05, 3.14206200e+06, 7.19659080e+07],
[1.42884000e+05, 3.14206200e+06, 7.19659080e+07, 1.69521759e+09]], dtype = 'float')
b = np.array([[ 6.88336000e+05, 1.38161480e+07, 2.97858342e+08,
-1.87399691e+09]], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - m * b
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - m * b
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Tiongkok - Active Cases - Pertumbuhan)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + {:.4f}x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Tiongkok - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Tiongkok - Active Cases - Pertumbuhan)')
plt.xlabel('Date (22 Jan - 17 Feb)')
plt.ylabel('Active Cases')
#karena hasil yang didapat jauh sekali dari hasil sebenarnya, terpaksa saya menggunakan fungsi yang sudah ada di scikit-learn sebagai pembetulannya
model1 = np.poly1d(np.polyfit(x, y, 3))
line1 = np.linspace(1, 27, 27)
plt.scatter(x, y)
plt.plot(line1, model1(line1))
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Tiongkok - Active Cases - Pertumbuhan)')
plt.xlabel('Date (22 Jan - 17 Feb)')
plt.ylabel('Active Cases')
plt.show()
import sklearn
from sklearn.metrics import r2_score
r = np.sqrt(r2_score(y, model1(x)))
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Tiongkok - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_up_3 = r**2
yreg_chi_act_up = model1(line1)
3.b. Kurva Penurunan
y = chi_act_down
x = date_chi_down
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[ 3.9000000e+01, 7.8000000e+02, 2.0540000e+04, 6.0840000e+05],
[ 7.8000000e+02, 2.0540000e+04, 6.0840000e+05, 1.9221332e+07],
[ 2.0540000e+04, 6.0840000e+05, 1.9221332e+07, 6.3253320e+08],
[ 6.0840000e+05, 1.9221332e+07, 6.3253320e+08, -6.5932860e+07]])
b = np.array([9.90933000e+05, 1.19426120e+07, 2.22691196e+08, 9.16328854e+08])
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - m * b
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - m * b
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Tiongkok - Active Cases - Penurunan)")
print("y = {:.4f}x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_chi_act_down = yreg
yreg_chi_act_down
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_chi_act_down))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Tiongkok - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_down_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_chi_act_down,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Tiongkok - Active Cases - Penurunan)')
plt.xlabel('Date (17 Feb - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Tiongkok, dan x adalah tanggalnya.
y = chi_dth
x = date_chi_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Tiongkok - Total Deaths):")
print("y = {:.4f}x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Tiongkok - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Tiongkok - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Tiongkok - Total Deaths)')
plt.xlabel('Date (22 Jan - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Tiongkok - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Tiongkok - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Tiongkok - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Tiongkok - Total Deaths)')
plt.xlabel('Date (22 Jan - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = chi_dth
x = date_chi_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[ 6.50000000e+01, 2.14500000e+03, 9.36650000e+04,
4.60102500e+06],
[ 2.14500000e+03, 9.36650000e+04, 4.60102500e+06,
2.41074977e+08],
[ 9.36650000e+04, 4.60102500e+06, 2.41074977e+08,
2.72495937e+08],
[ 4.60102500e+06, 2.41074977e+08, 2.72495937e+08,
-1.26559967e+08]], dtype = 'float')
b = np.array([1.30560000e+05, 5.73790500e+06, 2.76864517e+08, 1.31892629e+09], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Tiongkok - Total Deaths)")
print("y = {:.4f}x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Tiongkok - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Tiongkok - Total Deaths)')
plt.xlabel('Date (22 Jan - 26 Mar)')
plt.ylabel('Total Deaths')
#karena hasil yang didapat jauh sekali dari hasil sebenarnya, terpaksa saya menggunakan fungsi yang sudah ada di scikit-learn sebagai pembetulannya
model2 = np.poly1d(np.polyfit(x, y, 3))
line2 = np.linspace(1, 27, 65)
plt.scatter(x, y)
plt.plot(line2, model2(line2))
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Tiongkok- Total Deaths)')
plt.xlabel('Date (22 Jan - 26 Mar)')
plt.ylabel('Total Deaths')
plt.show()
import sklearn
from sklearn.metrics import r2_score
r = np.sqrt(r2_score(y, model2(x)))
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Tiongkok - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_chi_dth_3 = r**2
yreg_chi_dth = model2(line2)
Menentukan Kurva Regresi yang Paling Mewakili Data di Tiongkok
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_chi_up_1))
print("Eksponensial : {:.4f}".format(R2_chi_up_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_chi_up_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_chi_down_1))
print("Eksponensial : {:.4f}".format(R2_chi_down_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_chi_down_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_chi_dth_1))
print("Eksponensial : {:.4f}".format(R2_chi_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_chi_dth_3))
Jadi, data kenaikan dan penurunan active cases serta data total deaths di Tiongkok paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
1.a. Kurva Pertumbuhan
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases (Pertumbuhan) di Korea Selatan, dan x adalah tanggalnya.
y = kor_act_up
x = date_kor_up
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Korea Selatan - Active Cases - Pertumbuhan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Korea Selatan - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_up_1 = r**2
visualisasi grafik persamaan berpangkat (Korea Selatan - Active Cases - Pertumbuhan)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Korea Selatan - Active Cases - Pertumbuhan)')
plt.xlabel('Date (15 Feb - 11 Mar)')
plt.ylabel('Active Cases')
1.b. Kurva Penurunan
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases (penurunan) di Korea Selatan, dan x adalah tanggalnya.
y = kor_act_down
x = date_kor_down
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Korea Selatan - Active Cases - Penurunan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Korea Selatan - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_down_1 = r**2
visualisasi grafik persamaan berpangkat (Korea Selatan - Active Cases - Penurunan)
xreg = np.array(range(1,int(x[-1]+1)))
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Korea Selatan - Active Cases - Penurunan)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
2.a. Kurva Pertumbuhan
persamaan berikut dapat ditulis menjadi:
y = kor_act_up
x = date_kor_up
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Korea Selatan - Active Cases - Pertumbuhan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Korea Selatan - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_up_2 = r**2
visualisasi grafik persamaan eksponensial (Korea Selatan - Active Cases - Pertumbuhan)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Korea Selatan - Active Cases - Pertumbuhan)')
plt.xlabel('Date (15 Feb - 11 Mar)')
plt.ylabel('Active Cases')
2.b. Kurva Penurunan
persamaan berikut dapat ditulis menjadi:
y = kor_act_down
x = date_kor_down
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Korea Selatan - Active Cases - Penurunan):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Korea Selatan - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_down_2 = r**2
visualisasi grafik persamaan eksponensial (Korea Selatan - Active Cases - Penurunan)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Korea Selatan - Active Cases - Penurunan)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde-3)
3.a. Kurva Pertumbuhan
y = kor_act_up
x = date_kor_up
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
A = np.array([[2.6000000e+01, 3.5100000e+02, 6.2010000e+03, 1.2320100e+05],
[3.5100000e+02, 6.2010000e+03, 1.2320100e+05, 2.6106210e+06],
[6.2010000e+03, 1.2320100e+05, 2.6106210e+06, 5.7617001e+07],
[1.2320100e+05, 2.6106210e+06, 5.7617001e+07, 1.3077971e+09]], dtype = 'float')
b = np.array([7.82840000e+04, 1.58764900e+06, 3.36666950e+07, 7.37570839e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Korea Selatan - Active Cases - Pertumbuhan)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_kor_act_up = yreg
yreg_kor_act_up
yDt = ((y - y.mean()))**2
yD = ((y - yreg_kor_act_up))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Korea Selatan - Active Cases - Pertumbuhan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_up_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_kor_act_up,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Korea Selatan - Active Cases - Pertumbuhan)')
plt.xlabel('Date (15 Feb - 11 Mar)')
plt.ylabel('Active Cases')
3.b. Kurva Penurunan
y = kor_act_down
x = date_kor_down
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
A = np.array([[1.6000000e+01, 1.3600000e+02, 1.4960000e+03, 1.8496000e+04],
[1.3600000e+02, 1.4960000e+03, 1.8496000e+04, 2.4384800e+05],
[1.4960000e+03, 1.8496000e+04, 2.4384800e+05, 3.3477760e+06],
[1.8496000e+04, 2.4384800e+05, 3.3477760e+06, 4.7260136e+07]], dtype = 'float')
b = np.array([1.03099000e+05, 8.20688000e+05, 8.64518800e+06, 1.03811552e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Korea Selatan - Active Cases - Penurunan)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_kor_act_down = yreg
yreg_kor_act_down
yDt = ((y - y.mean()))**2
yD = ((y - yreg_kor_act_down))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Korea Selatan - Active Cases - Penurunan) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_down_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_kor_act_down,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Korea Selatan - Active Cases - Penurunan)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Korea Selatan, dan x adalah tanggalnya.
y = kor_dth
x = date_kor_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A #A=log(a)
b = B
print("Persamaan Berpangkat (Korea Selatan - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Korea Sealtan - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Korea Selatan - Total Deaths)
xreg = np.array(range(0,int(x[-1]+1)*10))
xreg = xreg/10 #bertujuan untuk memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Korea Selatan - Total Deaths)')
plt.xlabel('Date (20 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = kor_dth
x = date_kor_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Korea Selatan - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Korea Selatan - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Korea Selatan - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Korea Selatan - Total Deaths)')
plt.xlabel('Date (20 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = kor_dth
x = date_kor_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[ 3.60000000e+01, 6.66000000e+02, 1.62060000e+04,
4.43556000e+05],
[ 6.66000000e+02, 1.62060000e+04, 4.43556000e+05,
1.29485940e+07],
[ 1.62060000e+04, 4.43556000e+05, 1.29485940e+07,
3.93729876e+08],
[ 4.43556000e+05, 1.29485940e+07, 3.93729876e+08,
-5.71404822e+08]], dtype = 'float')
b = np.array([1.9590000e+03, 5.0520000e+04, 1.4248120e+06, 4.2395712e+07], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Korea Selatan - Total Deaths)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_kor_dth = yreg
yreg_kor_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_kor_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Korea Selatan - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_kor_dth_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_kor_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Korea Selatan - Total Deaths)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Korea Selatan
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_kor_up_1))
print("Eksponensial : {:.4f}".format(R2_kor_up_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_kor_up_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_kor_down_1))
print("Eksponensial : {:.4f}".format(R2_kor_down_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_kor_down_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_kor_dth_1))
print("Eksponensial : {:.4f}".format(R2_kor_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_kor_dth_3))
Jadi, data kenaikan dan penurunan active cases serta data total deaths di Korea Selatan paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Italia, dan x adalah tanggalnya.
y = ita_act
x = date_ita_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Italia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Italia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_act_1 = r**2
visualisasi grafik persamaan berpangkat (Italia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Italia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ita_act
x = date_ita_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Italia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Italia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_act_2 = r**2
visualisasi grafik persamaan eksponensial (Italia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Italia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = ita_act
x = date_ita_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[4.10000000e+01, 8.61000000e+02, 2.38210000e+04, 7.41321000e+05],
[8.61000000e+02, 2.38210000e+04, 7.41321000e+05, 2.46070930e+07],
[2.38210000e+04, 7.41321000e+05, 2.46070930e+07, 8.50789401e+08],
[7.41321000e+05, 2.46070930e+07, 8.50789401e+08, 1.90236789e+08]], dtype = 'float')
b = np.array([5.86188000e+05, 2.02600250e+07, 7.19087439e+08, 2.61502307e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Italia - Active Cases)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ita_act = yreg
yreg_ita_act
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ita_act))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Italia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_act_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ita_act,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Italia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Italia, dan x adalah tanggalnya.
y = ita_dth
x = date_ita_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Italia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Italia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Italia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Italia - Total Deaths)')
plt.xlabel('Date (21 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ita_dth
x = date_ita_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Italia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Italia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Italia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Italia - Total Deaths)')
plt.xlabel('Date (21 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = ita_dth
x = date_ita_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[3.50000000e+01, 6.30000000e+02, 1.49100000e+04, 3.96900000e+05],
[6.30000000e+02, 1.49100000e+04, 3.96900000e+05, 1.12689780e+07],
[1.49100000e+04, 3.96900000e+05, 1.12689780e+07, 3.33263700e+08],
[3.96900000e+05, 1.12689780e+07, 3.33263700e+08, 1.54678014e+09]], dtype = 'float')
b = np.array([6.27710000e+04, 1.86998400e+06, 5.71214420e+07, 1.77758009e+09], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Italia - Total Deaths)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ita_dth = yreg
yreg_ita_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ita_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Italia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ita_dth_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ita_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Italia - Total Deaths)')
plt.xlabel('Date (21 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Italia
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ita_act_1))
print("Eksponensial : {:.4f}".format(R2_ita_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ita_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ita_dth_1))
print("Eksponensial : {:.4f}".format(R2_ita_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ita_dth_3))
Jadi, data active cases dan data total deaths di Italia paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Iran, dan x adalah tanggalnya.
y = iran_act
x = date_iran_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Iran - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Iran - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_act_1 = r**2
visualisasi grafik persamaan berpangkat (Iran - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Iran - Active Cases)')
plt.xlabel('Date (20 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = iran_act
x = date_iran_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Iran - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Iran - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_act_2 = r**2
visualisasi grafik persamaan eksponensial (Iran - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Iran - Active Cases)')
plt.xlabel('Date (20 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = iran_act
x = date_iran_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[ 3.60000000e+01, 6.66000000e+02, 1.62060000e+04,
4.43556000e+05],
[ 6.66000000e+02, 1.62060000e+04, 4.43556000e+05,
1.29485940e+07],
[ 1.62060000e+04, 4.43556000e+05, 1.29485940e+07,
3.93729876e+08],
[ 4.43556000e+05, 1.29485940e+07, 3.93729876e+08,
-5.71404822e+08]], dtype = 'float')
b = np.array([2.01465000e+05, 5.58755100e+06, 1.63282457e+08, 6.58586441e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Iran - Active Cases)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + ({:.4f})".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_iran_act = yreg
yreg_iran_act
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_iran_act))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Iran - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_act_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_iran_act,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Iran - Active Cases)')
plt.xlabel('Date (20 Feb - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Iran, dan x adalah tanggalnya.
y = iran_dth
x = date_iran_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Iran - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Iran - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Iran - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Iran - Total Deaths)')
plt.xlabel('Date (19 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = iran_dth
x = date_iran_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Iran - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Iran - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Iran - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Iran - Total Deaths)')
plt.xlabel('Date (19 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = iran_dth
x = date_iran_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[3.70000000e+01, 7.03000000e+02, 1.75750000e+04, 4.94209000e+05],
[7.03000000e+02, 1.75750000e+04, 4.94209000e+05, 1.48227550e+07],
[1.75750000e+04, 4.94209000e+05, 1.48227550e+07, 4.63073833e+08],
[4.94209000e+05, 1.48227550e+07, 4.63073833e+08, 1.99432159e+09]], dtype = 'float')
b = np.array([2.11830000e+04, 6.49180000e+05, 2.05634200e+07, 6.66336352e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Iran - Total Deaths)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_iran_dth = yreg
yreg_iran_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_iran_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Iran - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_iran_dth_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_iran_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Iran - Total Deaths)')
plt.xlabel('Date (19 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Iran
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_iran_act_1))
print("Eksponensial : {:.4f}".format(R2_iran_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_iran_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_iran_dth_1))
print("Eksponensial : {:.4f}".format(R2_iran_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_iran_dth_3))
Jadi, data active cases dan data total deaths di Iran paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Spanyol, dan x adalah tanggalnya.
y = spa_act
x = date_spa_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Spanyol - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Spanyol - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_act_1 = r**2
visualisasi grafik persamaan berpangkat (Spanyol - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Spanyol - Active Cases)')
plt.xlabel('Date (24 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = spa_act
x = date_spa_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Spanyol - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Spanyol - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_act_2 = r**2
visualisasi grafik persamaan eksponensial (Spanyol - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Spanyol - Active Cases)')
plt.xlabel('Date (24 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = spa_act
x = date_spa_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[3.20000000e+01, 5.28000000e+02, 1.14400000e+04, 2.78784000e+05],
[5.28000000e+02, 1.14400000e+04, 2.78784000e+05, 7.24609600e+06],
[1.14400000e+04, 2.78784000e+05, 7.24609600e+06, 1.96171008e+08],
[2.78784000e+05, 7.24609600e+06, 1.96171008e+08, 1.16720942e+09]], dtype = 'float')
b = np.array([ 2.93327000e+05, 8.08864400e+06, 2.28065264e+08,
-2.04989189e+09], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Spanyol - Active Cases)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_spa_act = yreg
yreg_spa_act
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_spa_act))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Spanyol - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_act_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_spa_act,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Spanyol - Active Cases)')
plt.xlabel('Date (24 Feb - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Spanyol, dan x adalah tanggalnya.
y = spa_dth
x = date_spa_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Spanyol - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Spanyol - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Spanyol - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Spanyol - Total Deaths)')
plt.xlabel('Date (3 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = spa_dth
x = date_spa_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Spanyol - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Spanyol - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Spanyol - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Spanyol - Total Deaths)')
plt.xlabel('Date (3 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = spa_dth
x = date_spa_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[2.400000e+01, 3.000000e+02, 4.900000e+03, 9.000000e+04],
[3.000000e+02, 4.900000e+03, 9.000000e+04, 1.763020e+06],
[4.900000e+03, 9.000000e+04, 1.763020e+06, 3.597000e+07],
[9.000000e+04, 1.763020e+06, 3.597000e+07, 7.547407e+08]], dtype = 'float')
b = np.array([2.07750000e+04, 4.31133000e+05, 9.17407300e+06, 1.98743055e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Spanyol - Total Deaths)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + ({:.4f})".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_spa_dth = yreg
yreg_spa_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_spa_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Spanyol - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_spa_dth_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_spa_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Spanyol - Total Deaths)')
plt.xlabel('Date (3 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Spanyol
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_spa_act_1))
print("Eksponensial : {:.4f}".format(R2_spa_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_spa_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_spa_dth_1))
print("Eksponensial : {:.4f}".format(R2_spa_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_spa_dth_3))
Jadi, data active cases dan data total deaths di Spanyol paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Jerman, dan x adalah tanggalnya.
y = ger_act
x = date_ger_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Jerman - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Jerman - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_act_1 = r**2
visualisasi grafik persamaan berpangkat (Jerman - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Jerman - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ger_act
x = date_ger_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Jerman - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Jerman - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_act_2 = r**2
visualisasi grafik persamaan eksponensial (Jerman - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Jerman - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = ger_act
x = date_ger_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[4.10000000e+01, 8.61000000e+02, 2.38210000e+04, 7.41321000e+05],
[8.61000000e+02, 2.38210000e+04, 7.41321000e+05, 2.46070930e+07],
[2.38210000e+04, 7.41321000e+05, 2.46070930e+07, 8.50789401e+08],
[7.41321000e+05, 2.46070930e+07, 8.50789401e+08, 1.90236789e+08]], dtype = 'float')
b = np.array([2.64818000e+05, 9.63698800e+06, 3.55487294e+08, 3.70887676e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Jerman - Active Cases)")
print("y = {:.4f}x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ger_act = yreg
yreg_ger_act
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ger_act))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Jerman - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_act_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ger_act,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Jerman - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Jerman, dan x adalah tanggalnya.
y = ger_dth
x = date_ger_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Jerman - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Jerman - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Jerman - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Jerman - Total Deaths)')
plt.xlabel('Date (9 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ger_dth
x = date_ger_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Jerman - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Jerman - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Jerman - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Jerman - Total Deaths)')
plt.xlabel('Date (9 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = ger_dth
x = date_ger_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[1.80000000e+01, 1.71000000e+02, 2.10900000e+03, 2.92410000e+04],
[1.71000000e+02, 2.10900000e+03, 2.92410000e+04, 4.32345000e+05],
[2.10900000e+03, 2.92410000e+04, 4.32345000e+05, 6.65720100e+06],
[2.92410000e+04, 4.32345000e+05, 6.65720100e+06, 1.05409929e+08]], dtype = 'float')
b = np.array([1.159000e+03, 1.727900e+04, 2.694450e+05, 4.317707e+06], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Jerman - Total Deaths)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + ({:.4f})".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ger_dth = yreg
yreg_ger_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ger_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Jerman - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ger_dth_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ger_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Jerman - Total Deaths)')
plt.xlabel('Date (9 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Jerman
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ger_act_1))
print("Eksponensial : {:.4f}".format(R2_ger_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ger_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ger_dth_1))
print("Eksponensial : {:.4f}".format(R2_ger_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ger_dth_3))
Jadi, data active cases dan data total deaths di Jerman paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Australia, dan x adalah tanggalnya.
y = aus_act
x = date_aus_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Australia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Australia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_act_1 = r**2
visualisasi grafik persamaan berpangkat (Australia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Australia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = aus_act
x = date_aus_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Australia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Australia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_act_2 = r**2
visualisasi grafik persamaan eksponensial (Australia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Australia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = aus_act
x = date_aus_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[4.10000000e+01, 8.61000000e+02, 2.38210000e+04, 7.41321000e+05],
[8.61000000e+02, 2.38210000e+04, 7.41321000e+05, 2.46070930e+07],
[2.38210000e+04, 7.41321000e+05, 2.46070930e+07, 8.50789401e+08],
[7.41321000e+05, 2.46070930e+07, 8.50789401e+08, 1.90236789e+08]], dtype = 'float')
b = np.array([1.62330000e+04, 5.97518000e+05, 2.23691140e+07, 8.46516602e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Australia - Active Cases)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Australia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Australia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
#Namun, setelah dicocokkan di MS Excel, ternyata grafik di atas menyerupai regresi polinomial orde 2, maka seperti perlakuan pada data di Tiongkok, saya terpaksa menggunakan fungsi dari scikit-learn
model3 = np.poly1d(np.polyfit(x, y, 3))
line3 = np.linspace(1, 41, 41)
plt.scatter(x, y)
plt.plot(line3, model3(line3))
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Australia - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
plt.show()
import sklearn
from sklearn.metrics import r2_score
r = np.sqrt(r2_score(y, model3(x)))
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Australia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_act_3 = r**2
yreg_aus_act = model3(line3)
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Australia, dan x adalah tanggalnya.
y = aus_dth
x = date_aus_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Australia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Australia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Australia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Australia - Total Deaths)')
plt.xlabel('Date (1 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = aus_dth
x = date_aus_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Australia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Australia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Australia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Australia - Total Deaths)')
plt.xlabel('Date (1 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = aus_dth
x = date_aus_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[2.6000000e+01, 3.5100000e+02, 6.2010000e+03, 1.2320100e+05],
[3.5100000e+02, 6.2010000e+03, 1.2320100e+05, 2.6106210e+06],
[6.2010000e+03, 1.2320100e+05, 2.6106210e+06, 5.7617001e+07],
[1.2320100e+05, 2.6106210e+06, 5.7617001e+07, 1.3077971e+09]], dtype = 'float')
b = np.array([1.2100e+02, 2.1760e+03, 4.4510e+04, 9.6901e+05], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Australia - Total Deaths)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_aus_dth = yreg
yreg_aus_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_aus_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Australia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_aus_dth_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_aus_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Australia - Total Deaths)')
plt.xlabel('Date (1 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Australia
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_aus_act_1))
print("Eksponensial : {:.4f}".format(R2_aus_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_aus_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_aus_dth_1))
print("Eksponensial : {:.4f}".format(R2_aus_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_aus_dth_3))
Jadi, data active cases dan data total deaths di Australia paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Amerika Serikat, dan x adalah tanggalnya.
y = usa_act
x = date_usa_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Amerika Serikat - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Amerika Serikat - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_act_1 = r**2
visualisasi grafik persamaan berpangkat (Amerika Serikat - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Amerika Serikat - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = usa_act
x = date_usa_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Amerika Serikat - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Amerika Serikat - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_act_2 = r**2
visualisasi grafik persamaan eksponensial (Amerika Serikat - Active Cases)
xreg = x
yreg = a*(np.e**(b*xreg))
yreg_usa_act = yreg
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg_usa_act,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Amerika Serikat - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = usa_act
x = date_usa_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[4.10000000e+01, 8.61000000e+02, 2.38210000e+04, 7.41321000e+05],
[8.61000000e+02, 2.38210000e+04, 7.41321000e+05, 2.46070930e+07],
[2.38210000e+04, 7.41321000e+05, 2.46070930e+07, 8.50789401e+08],
[7.41321000e+05, 2.46070930e+07, 8.50789401e+08, 1.90236789e+08]], dtype = 'float')
b = np.array([ 3.69322000e+05, 1.39938740e+07, 5.34679344e+08,
-9.13997118e+08], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Amerika Serikat - Active Cases)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Amerika Serikat - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Amerika Serikat - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
#Namun, setelah dicocokkan di MS Excel, ternyata grafik di atas menyerupai regresi polinomial orde 2, maka seperti perlakuan pada data di Tiongkok dan Australia, saya terpaksa menggunakan fungsi dari scikit-learn
model = np.poly1d(np.polyfit(x, y, 3))
line = np.linspace(1, 41, 41)
plt.scatter(x, y)
plt.plot(line, model(line))
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Amerika Serikat - Active Cases)')
plt.xlabel('Date (15 Feb - 26 Mar)')
plt.ylabel('Active Cases')
plt.show()
import sklearn
from sklearn.metrics import r2_score
r = np.sqrt(r2_score(y, model(x)))
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Amerika Serikat - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_act_3 = r**2
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Amerika Serikat, dan x adalah tanggalnya.
y = usa_dth
x = date_usa_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Amerika Serikat - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Amerika Serikat - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Amerika Serikat - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Amerika Serikat - Total Deaths)')
plt.xlabel('Date (29 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = usa_dth
x = date_usa_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Amerika Serikat - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Amerika Serikat - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Amerika Serikat - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Amerika Serikat - Total Deaths)')
plt.xlabel('Date (29 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = usa_dth
x = date_usa_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[2.70000000e+01, 3.78000000e+02, 6.93000000e+03, 1.42884000e+05],
[3.78000000e+02, 6.93000000e+03, 1.42884000e+05, 3.14206200e+06],
[6.93000000e+03, 1.42884000e+05, 3.14206200e+06, 7.19659080e+07],
[1.42884000e+05, 3.14206200e+06, 7.19659080e+07, 1.69521759e+09]], dtype = 'float')
b = np.array([5.5850000e+03, 1.3126400e+05, 3.1831360e+06, 7.8613406e+07], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Amerika Serikat - Total Deaths)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + ({:.4f})".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_usa_dth = yreg
yreg_usa_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_usa_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Amerika Serikat - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_usa_dth_3 = r**2
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_usa_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Amerika Serikat - Total Deaths)')
plt.xlabel('Date (29 Feb - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Amerika Serikat
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_usa_act_1))
print("Eksponensial : {:.4f}".format(R2_usa_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_usa_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_usa_dth_1))
print("Eksponensial : {:.4f}".format(R2_usa_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_usa_dth_3))
Jadi, data active cases di Amerika Serikat paling dapat diwakilkan dengan regresi eksponensial, sedangkan data total deaths di negara tersebut paling dapat diwakilkan dengan regresi polinomial orde 3.
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Active Cases di Indonesia, dan x adalah tanggalnya.
y = ina_act
x = date_ina_act
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Indonesia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Indonesia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_act_1 = r**2
visualisasi grafik persamaan berpangkat (Indonesia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Indonesia - Active Cases)')
plt.xlabel('Date (2 Mar - 26 Mar)')
plt.ylabel('Active Cases')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ina_act
x = date_ina_act
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Indonesia - Active Cases):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Indonesia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_act_2 = r**2
visualisasi grafik persamaan eksponensial (Indonesia - Active Cases)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Indonesia - Active Cases)')
plt.xlabel('Date (2 Mar - 26 Mar)')
plt.ylabel('Active Cases')
3. Regresi Polinomial (Orde 3)
y = ina_act
x = date_ina_act
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[2.50000000e+01, 3.25000000e+02, 5.52500000e+03, 1.05625000e+05],
[3.25000000e+02, 5.52500000e+03, 1.05625000e+05, 2.15364500e+06],
[5.52500000e+03, 1.05625000e+05, 2.15364500e+06, 4.57356250e+07],
[1.05625000e+05, 2.15364500e+06, 4.57356250e+07, 9.98881325e+08]], dtype = 'float')
b = np.array([4.848000e+03, 1.011240e+05, 2.181112e+06, 4.815036e+07], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Indonesia - Active Cases)")
print("y = {:.4f}x^3 + ({:.4f})x^2 + {:.4f}x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ina_act = yreg
yreg_ina_act
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ina_act))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Indonesia - Active Cases) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_act_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ina_act,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Indonesia - Active Cases)')
plt.xlabel('Date (2 Mar - 26 Mar)')
plt.ylabel('Active Cases')
1. Regresi Berpangkat
Di sini log(y) adalah p, log(x) adalah q, b adalah B, log(a) adalah A. Dengan y adalah Total Deaths di Indonesia, dan x adalah tanggalnya.
y = ina_dth
x = date_ina_dth
p = np.log10(y)
q = np.log10(x)
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = 10**A # A=log(a)
b = B
print("Persamaan Berpangkat (Indonesia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Berpangkat (Indonesia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_dth_1 = r**2
visualisasi grafik persamaan berpangkat (Indonesia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(xreg**b)
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Berpangkat\n(Indonesia - Total Deaths)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
2. Regresi Eksponensial
persamaan berikut dapat ditulis menjadi:
y = ina_dth
x = date_ina_dth
p = np.log(y)
q = x
menghitung nilai a dan b menggunakan rumus berikut:
n = len(q)
pq = p*q
pp = p**2
qq = q**2
B = (n*pq.sum()-q.sum()*p.sum())/(n*qq.sum()-(q.sum())**2)
B
A = p.mean()-B*q.mean()
A
a = np.e**A # A=log(a)
b = B
print("Persamaan Eksponensial (Indonesia - Total Deaths):")
print("y = ({:.4f})x^({:.4f})".format(a,b))
menghitung koefisien korelasi menggunakan rumus berikut:
r = ((n*pq.sum()-(p.sum()*q.sum()))/(np.sqrt(((n*pp.sum())-(p.sum())**2)*((n*qq.sum())-(q.sum())**2))))
print("Nilai R dan R^2 untuk Persamaan Eksponensial (Indonesia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_dth_2 = r**2
visualisasi grafik persamaan eksponensial (Indonesia - Total Deaths)
xreg = np.array(range(0,(x[-1]+1)*10))
xreg = xreg/10 #memperhalus bentuk garis regresi
yreg = a*(np.e**(b*xreg))
ax = plt.plot(x,y,'ro')
plt.plot(xreg,yreg,'b')
plt.grid()
plt.title('Grafik Persamaan Eksponensial\n(Indonesia - Total Deaths)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
3. Regresi Polinomial (Orde 3)
y = ina_dth
x = date_ina_dth
membuat matriks A dan B
#Matriks A
A = np.zeros((4, 4), dtype = float)
for i in range(0, 4):
for j in range(0, 4) :
A[i][j] = (x**(j+i)).sum()
A
#Matriks B
B = np.zeros((1, 4), dtype = float)
for i in range(0, 4) :
B[0][i] = ((x**i)*y).sum()
B
mencari koefisien persamaan dengan menggunakan eliminasi gauss
A = np.array([[1.6000000e+01, 1.3600000e+02, 1.4960000e+03, 1.8496000e+04],
[1.3600000e+02, 1.4960000e+03, 1.8496000e+04, 2.4384800e+05],
[1.4960000e+03, 1.8496000e+04, 2.4384800e+05, 3.3477760e+06],
[1.8496000e+04, 2.4384800e+05, 3.3477760e+06, 4.7260136e+07]], dtype = 'float')
b = np.array([4.30000e+02, 5.35500e+03, 7.07990e+04, 9.71829e+05], dtype = 'float')
Ab = np.hstack([A, b.reshape(-1, 1)])
n = len(b)
for i in range(n):
a = Ab[i]
for j in range(i + 1, n):
b = Ab[j]
m = a[i] / b[i]
Ab[j] = a - (m*b)
for i in range(n - 1, -1, -1):
Ab[i] = Ab[i] / Ab[i, i]
a = Ab[i]
for j in range(i - 1, -1, -1):
b = Ab[j]
m = a[i]/b[i]
Ab[j] = a - (m*b)
X = Ab[:, 4]
X
a0 = X[0]
a1 = X[1]
a2 = X[2]
a3 = X[3]
print("Persaman Regresi Polinomial (Orde 3) (Indonesia - Total Deaths)")
print("y = ({:.4f})x^3 + {:.4f}x^2 + ({:.4f})x + {:.4f}".format(a3, a2, a1, a0))
yreg = a0 + a1*x + a2*(x**2) + a3*(x**3)
yreg_ina_dth = yreg
yreg_ina_dth
menghitung koefisien korelasi
yDt = ((y - y.mean()))**2
yD = ((y - yreg_ina_dth))**2
r = np.sqrt(abs(yDt.sum() - yD.sum())/yDt.sum())
print("Nilai R dan R^2 untuk Persamaan Polinomial (Orde 3) (Indonesia - Total Deaths) adalah:")
print("R = {:.4f} dan R^2 = {:.4f}".format(r,r**2))
R2_ina_dth_3 = r**2
visualisasi persamaan polinomial
ax = plt.plot(x,y,'ro')
plt.plot(x,yreg_ina_dth,'b')
plt.grid()
plt.title('Grafik Persamaan Polinomial (Orde 3)\n(Indonesia - Total Deaths)')
plt.xlabel('Date (11 Mar - 26 Mar)')
plt.ylabel('Total Deaths')
Menentukan Kurva Regresi yang Paling Mewakili Data di Indonesia
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ina_act_1))
print("Eksponensial : {:.4f}".format(R2_ina_act_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ina_act_3))
print("R^2 score setiap jenis Regresi:")
print("Pangkat : {:.4f}".format(R2_ina_dth_1))
print("Eksponensial : {:.4f}".format(R2_ina_dth_2))
print("Polinomial Orde 3 : {:.4f}".format(R2_ina_dth_3))
Jadi, data active cases dan data total deaths di Indonesia paling dapat diwakilkan dengan regresi polinomial orde 3.
ditampilkan grafik data active cases dari hari ke-0 hingga hari ke-24 untuk masing-masing kasus di setiap negara
date_all = np.arange(25)
yreg_chi_act = yreg_chi_act_up[0:25]
yreg_kor_act = yreg_kor_act_up[0:25]
plt.plot(date_all,yreg_chi_act,'b')
plt.plot(date_all,yreg_kor_act,'m')
plt.plot(date_all,yreg_ita_act[0:25],'c')
plt.plot(date_all,yreg_iran_act[0:25],'g')
plt.plot(date_all,yreg_spa_act[0:25],'y')
plt.plot(date_all,yreg_ger_act[0:25],'k')
plt.plot(date_all,yreg_aus_act[0:25],'brown')
plt.plot(date_all,yreg_usa_act[0:25],'r')
plt.plot(date_all,yreg_ina_act,'gold')
plt.grid()
plt.title('Perbandingan Kurva Regresi\nData Active Cases di 9 Negara')
plt.xlabel('Hari ke-')
plt.ylabel('Active Cases')
blue_patch = mpatches.Patch(color='blue', label='Tiongkok')
magenta_patch = mpatches.Patch(color='magenta', label='Korea Selatan')
cyan_patch = mpatches.Patch(color='cyan', label='Italia')
green_patch = mpatches.Patch(color='green', label='Iran')
yellow_patch = mpatches.Patch(color='yellow', label='Spanyol')
black_patch = mpatches.Patch(color='black', label='Jerman')
brown_patch = mpatches.Patch(color='brown', label='Australia')
red_patch = mpatches.Patch(color='red', label='Amerika Serikat')
gold_patch = mpatches.Patch(color='gold', label='Indonesia')
plt.legend(handles=[blue_patch,magenta_patch,cyan_patch,green_patch,yellow_patch,black_patch,brown_patch,red_patch,gold_patch]
, loc=(1.04,0.35))
Dari grafik di atas, kita dapat melihat laju persebaran COVID-19 di 9 negara. Kita melihat bahwa Tiongkok memiliki laju active cases tertinggi dibandingkan negara lain. Hal ini terjadi karena Tiongkok merupakan asal dari virus tersebut muncul. Posisi kedua ditempati Spanyol. Menurut artikel yang dimuat di CNN, perkiraan virus tersebut menyebar luas di Spanyol adalah karena ada beberapa acara besar yang dihelat di Italia, yang merupakan negara dengan jumlah active cases yang sangat banyak pula, salah satunya ialah Liga Champions yang pada pertengahan Februari kemarin mempertandingkan dua tim dari Italia dan Spanyol. Tentunya pertandingan tersebut menimbulkan pergerakan massa dalam jumlah cukup besar untuk berkumpul ke suatu tempat, dalam hal ini yaitu ke Italia. Ini tentunya menyebabkan persebaran virus memiliki peluang yang sangat besar.
Posisi ketiga ditempati Italia. Penyebab dari laju di Italia tersebut disebutkan pada laman Kompas.com dipengaruhi oleh banyaknya penduduk usia senja dan tingginya mobilitas dari desa ke kota. Banyak orang di sana yang tinggal satu rumah dengan orang tua atau kakek neneknya. Orang-orang yang masih muda ini cenderung memiliki tingkat mobilitas yang cukup tinggi dengan pergi ke kota, lalu kembali ke desanya. Mobilitas inilah yang dinilai para peneliti di Oxford mungkin telah memperparah penyebaran virus di negara tersebut. Posisi keempat ditempati Iran. Menurut berita yang diunggah CNBC Indonesia, sebenarnya Iran secara ilmiah mampu menanggulangi penyebaran virus tersebut dengan baik, tetapi dihambat dengan berbagai hal oleh Amerika Serikat. Salah satu contohnya seperti pencegahan penjualan obat-obatan dan peralatan medis yang membuat Iran memiliki kendala yang sangat serius dalam memerangi virus ini.
Di urutan kelima ada Korea Selatan. Korea Selatan menduduki peringkat ini karena menurut berita yang dipublikasi oleh Liputan6 kuncinya adalah pada tes yang mereka lakukan. Dengan cepatnya tes dilakukan, sekitar 10 ribu tes per hari, negara ini dapat dengan cepat mendata siapa yang negatif dan siapa yang positif terjangkit virus ini. Posisi keenam ditempati Jerman, lalu diikuti Amerika Serikat, Indonesia, dan Australia.
ditampilkan grafik data total deaths dari hari ke-0 hingga hari ke-15 untuk masing-masing kasus di setiap negara
plt.plot(date_all[0:16],yreg_chi_dth[0:16],'b')
plt.plot(date_all[0:16],yreg_kor_dth[0:16],'m')
plt.plot(date_all[0:16],yreg_ita_dth[0:16],'c')
plt.plot(date_all[0:16],yreg_iran_dth[0:16],'g')
plt.plot(date_all[0:16],yreg_spa_dth[0:16],'y')
plt.plot(date_all[0:16],yreg_ger_dth[0:16],'k')
plt.plot(date_all[0:16],yreg_aus_dth[0:16],'brown')
plt.plot(date_all[0:16],yreg_usa_dth[0:16],'r')
plt.plot(date_all[0:16],yreg_ina_dth,'gold')
plt.grid()
plt.title('Perbandingan Kurva Regresi\nData Total Deaths di 9 Negara')
plt.xlabel('Hari ke-')
plt.ylabel('Total Deaths')
blue_patch = mpatches.Patch(color='blue', label='Tiongkok')
magenta_patch = mpatches.Patch(color='magenta', label='Korea Selatan')
cyan_patch = mpatches.Patch(color='cyan', label='Italia')
green_patch = mpatches.Patch(color='green', label='Iran')
yellow_patch = mpatches.Patch(color='yellow', label='Spanyol')
black_patch = mpatches.Patch(color='black', label='Jerman')
brown_patch = mpatches.Patch(color='brown', label='Australia')
red_patch = mpatches.Patch(color='red', label='Amerika Serikat')
gold_patch = mpatches.Patch(color='gold', label='Indonesia')
plt.legend(handles=[blue_patch,magenta_patch,cyan_patch,green_patch,yellow_patch,black_patch,brown_patch,red_patch,gold_patch]
, loc=(1.04,0.45))
Pada grafik di atas kita bisa melihat laju kematian akibat COVID-19 di 9 negara. Posisi pertama ditempati Spanyol. Ini didukung oleh artikel yang dimuat di laman berita Republika.co.id yang mengatakan bahwa di Spanyol, distribusi alat pelindung diri sangatlah buruk. Bahkan Konfederasi Serikat Medis Amerika Serikat, atau yang biasa disingkat CESM, menuding bahwa Kementerian Kesehatan di negara tersebut gagal memberikan perlindungan yang memadahi bagi tenaga medis.
Pada grafik ini posisi kedua dan ketiga masih diduduki Jerman dan Tiongkok. Namun, apabila melihat kurva keempat, yaitu Italia, kemiringannya paling tajam dibanding grafik lainnya. Ini yang membuat Italia kini menjadi salah satu negara dengan korban meninggal terbanyak, bersama dengan Spanyol. Hal ini didukung oleh data yang dikeluarkan The New York Times bahwa 23% penduduk di sana berusia di atas 65 tahun, yang mana semakin bertambah usia, semakin menurun sistem kekebalan tubuh seseorang. Ini terbukti dengan mayoritas penduduk Italia yang meninggal ialah orang-orang dengan usia senja, yaitu di atas 70-80 tahun.
Kurva selanjutnya yang akan menunjukkan peningkatan cukup tinggi yaitu Iran dan Amerika Serikat. Untuk negara Iran telah disebutkan sebelumnya bahwa penyebab negara ini cukup kewalahan ialah karena pembatasan-pembatasan yang dilakukan Amerika Serikat terkait distribusi obat-obatan dan lain-lain ke sana. Di Amerika Serikat, peningkatan terjadi cukup tinggi karena seperti dilansir dari BBC, presiden mereka, Trump, awalnya menganggap remeh dampak yang ditimbulkan dari virus ini. Ia juga malah membandingkan jumlah kematian akibat virus ini yang masih kalah daripada akibat yang ditimbulkan oleh flu biasa, meskipun belakangan ini disebutkan bahwa ia sudah menyadari dampak yang ditimbulkan dan mulai memperbaharui kebijakannya. Sedangkan di negara lainnya yang belum disebutkan trennya cenderung meningkat sedikit hingga sedang.
Untuk menentukan negara mana yang memiliki keadaan paling mirip dengan Indonesia, di sini digunakan perhitungan jarak Eucledian (Eucledian Distance). Perhitungan ini menghitung jarak antar 2 titik pada 2 garis yang berbeda, di sini setiap garis menggambarkan suatu negara. Semakin kecil hasil yang didapat, berarti tingkat kemiripan keadaan semakin mirip.
A = yreg_chi_act[0:25]
B = yreg_kor_act[0:25]
C = yreg_ita_act[0:25]
D = yreg_iran_act[0:25]
E = yreg_spa_act[0:25]
F = yreg_ger_act[0:25]
G = yreg_aus_act[0:25]
H = yreg_usa_act[0:25]
I = yreg_ina_act
distance1 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, H)]))
distance2 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, G)]))
distance3 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, F)]))
distance4 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, E)]))
distance5 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, D)]))
distance6 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, C)]))
distance7 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, B)]))
distance8 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, A)]))
print("Jarak Euclidean dari I ke H: ",distance1)
print("Jarak Euclidean dari I ke G: ",distance2)
print("Jarak Euclidean dari I ke F: ",distance3)
print("Jarak Euclidean dari I ke E: ",distance4)
print("Jarak Euclidean dari I ke D: ",distance5)
print("Jarak Euclidean dari I ke C: ",distance6)
print("Jarak Euclidean dari I ke B: ",distance7)
print("Jarak Euclidean dari I ke A: ",distance8)
plt.plot(date_all,yreg_ina_act,'gold')
plt.plot(date_all,yreg_usa_act[0:25],'b')
plt.grid()
plt.title('Perbandingan Kurva Regresi\nData Active Cases di Indonesia dan Amerika Serikat')
plt.xlabel('Hari ke-')
plt.ylabel('Active Cases')
red_patch = mpatches.Patch(color='red', label='Amerika Serikat')
gold_patch = mpatches.Patch(color='gold', label='Indonesia')
plt.legend(handles=[red_patch,gold_patch]
, loc=(1.04,0.35))
A = yreg_chi_dth[0:16]
B = yreg_kor_dth[0:16]
C = yreg_ita_dth[0:16]
D = yreg_iran_dth[0:16]
E = yreg_spa_dth[0:16]
F = yreg_ger_dth[0:16]
G = yreg_aus_dth[0:16]
H = yreg_usa_dth[0:16]
I = yreg_ina_dth
jarak1 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, H)]))
jarak2 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, G)]))
jarak3 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, F)]))
jarak4 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, E)]))
jarak5 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, D)]))
jarak6 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, C)]))
jarak7 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, B)]))
jarak8 = math.sqrt(sum([(a - b) ** 2 for a, b in zip(I, A)]))
print("Jarak Euclidean dari I ke H: ",jarak1)
print("Jarak Euclidean dari I ke G: ",jarak2)
print("Jarak Euclidean dari I ke F: ",jarak3)
print("Jarak Euclidean dari I ke E: ",jarak4)
print("Jarak Euclidean dari I ke D: ",jarak5)
print("Jarak Euclidean dari I ke C: ",jarak6)
print("Jarak Euclidean dari I ke B: ",jarak7)
print("Jarak Euclidean dari I ke A: ",jarak8)
plt.plot(date_all[0:16],yreg_kor_dth[0:16],'magenta')
plt.plot(date_all[0:16],yreg_ina_dth,'gold')
plt.grid()
plt.title('Perbandingan Kurva Regresi\nData Total Deaths di Indonesia dan Korea Selatan')
plt.xlabel('Hari ke-')
plt.ylabel('Total Deaths')
magenta_patch = mpatches.Patch(color='magenta', label='Korea Selatan')
gold_patch = mpatches.Patch(color='gold', label='Indonesia')
plt.legend(handles=[magenta_patch,gold_patch]
, loc=(1.04,0.45))
dari dua perhitungan di atas, dapat disimpulkan bahwa keadaan di Indonesia (active cases) paling mirip dengan keadaan di Amerika Serikat. Sedangkan untuk total deaths, keadaan di Indonesia paling mirip dengan keadaan di Korea Selatan.